package com.conselheiro.web.beans;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.apache.log4j.Logger;

import com.conselheiro.web.entidade.Post;
import com.conselheiro.web.entidade.enumeration.TipoPost;

/**
 * 
 * @author Jader Abreu
 *
 */
@ManagedBean
public class BuscaBean extends AbstractBean{

	private static final long serialVersionUID = 12345L;
	private String stringBusca;
	private TipoPost tipo;
	private List<Post> resultados;
	private Logger logger = Logger.getLogger(getClass());
	
	public BuscaBean() {
		tipo = TipoPost.TODOS;
		resultados = new ArrayList<Post>();
	}
	
	public void buscar() {
		if (getTipo() == null) {
    		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Tipo Busca", "Qual o tipo do Post a ser Buscado?"));
    	}
    	else
    	if (getStringBusca() == null || getStringBusca().isEmpty()) {
    		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"String vazia", "String de busca vazia."));
    	}
    	else {
    		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aguarde o resultado da busca", ""));
    		setResultados(getFachada().buscarPosts(getStringBusca()));
    		System.out.println("Quant: " + getResultados().size());
    	} if( resultados == null) {
    		setResultados(new ArrayList<Post>());
		}
	} 

	private void reset() {
		setStringBusca(null);
		setTipo(TipoPost.TODOS);
	}

	public String getStringBusca() {
		return stringBusca;
	}

	public void setStringBusca(String stringBusca) {
		this.stringBusca = stringBusca;
	}

	public TipoPost getTipo() {
		return tipo;
	}

	public void setTipo(TipoPost tipo) {
		this.tipo = tipo;
	}

	public void addError(ActionEvent actionEvent) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"String de busca", "Por favor, insira uma string para busca."));  
    }
	
	public List<Post> getResultados() {
		System.out.println("Apenas: " + resultados.size());
		return resultados;
	}
	public void setResultados(List<Post> resultados) {
		this.resultados = resultados;
	}
}
